草庐IT

Java Iterator(迭代器)

全部标签

C++::Boost::Regex 迭代子匹配

我将命名捕获组与BoostRegex/Xpressive结合使用。我想遍历所有子匹配,并获取每个子匹配的值和KEY(即what["type"])。sregexpattern=sregex::compile("(?Phref|src)=\"(?P[^\"]+)\"");sregex_iteratorcur(web_buffer.begin(),web_buffer.end(),pattern);sregex_iteratorend;for(;cur!=end;++cur){smatchconst&what=*cur;//Iknowhowtoaccessusingastringkey:wh

采用 STL 样式迭代器的 C++ 虚方法

我想要一个接口(interface)ModelGenerator,它有一个方法generate(),它接受一个可迭代的证据列表并创建一个模型。使用STLpseudo-duck-typing迭代器习惯用法...templateclassModelGenerator{public:templatevirtualboolgenerate(Iteratorbegin,Iteratorend,Model&model)=0;};但是虚函数不能模板化。所以我必须为整个类(class)制作模板:templateclassModelGenerator{public:virtualboolgenerate

c++ - 调整自定义迭代器以便(a?)reverse_iterator 可以翻转它的输出

最近,用户@MooingDuck设计了concatenated_range,一个优雅的自定义迭代器,解决了“链接”两个迭代器的问题,一切都在幕后。它非常适合预期用途:autorange0=concatenate_ranges(x,x+i-1,x+i,x+a5+1);a6=foo(range0.first,range0.second);现在,我想通过执行(示例#2)来调整它:autorange0=concatenate_ranges(x+a5+1,x+i-1,x+i+1,x+n);a6=foo(std::reverse_iterator(range0.second),std::rever

c++ - 如何访问第二个 map 迭代器?

我们是两个学生,我们现在有一个我们无法解决的史诗般的大问题。我们向老师求助,但他帮不了我们,所以我们最后的机会就是这个论坛!我们正在做一个项目:NPI文件的命令解释器。map::iteratortrouve=interpreteur.myMap.find(saisie);if(trouve==interpreteur.myMap.end())cerr*second)();我们必须使用名为“map”的对象,但我们无法获取第二个参数,名为..“Second”。为什么?代码块告诉我们错误在“else”中,这是错误:'second'wasnotdeclaredinthisscope.我们也试过

c++ - 带有移动迭代器的独特算法

是否允许使用std::unique通过std::make_move_iterator创建的迭代器功能?我试过thefollowing,并获得成功:#include#include#include#include#include#include#includestructA{A():i(std::numeric_limits::quiet_NaN()){std::cout::quiet_NaN();}A&operator=(Aconst&a){std::cout::quiet_NaN();return*this;}booloperatorv{1.0,1.0,2.0,2.0,2.0,3.0

c++ - 自定义容器基于范围的迭代

我有一个自定义容器,我想在基于范围的for循环中使用它。容器有点基于vector,像这样:templateclassIDMap{private:structItem{uint16_tmVersion;TmItem;templateItem(uint16_tversion,Arguments&&...args):mVersion(version),mItem(args...){}};public:typedefuint32_tItemID;templateItemIDAddItem(Arguments&&...args);voidMarkAsFree(constItemIDid);T&G

c++ - 在 C++ 中建模任意树(使用迭代器)

我正在寻找一种方法来为每个节点具有任意数量子节点的树建模。这个答案建议使用BoostGraphLibrary来完成这个任务:What'sagoodandstableC++treeimplementation?我需要执行的主要操作是树及其子树的遍历函数(前序、子树、叶子)。我还需要从child向上收集数据的功能。BGL是正确的选择吗?如何实现简单树的先序遍历?在文档中,我只能找到有关常规图表的信息。编辑:我也知道tree.hh库,但它的许可证似乎并不适合所有人。 最佳答案 我已经对这棵树进行了改进。顶点和边迭代器现在都包含在外观中。如

c++ - 排列值顺序的迭代器

我有一个简单的排列结构:structPermutation{vectoritems;//["val_0","val_1","val_2","val_3","val_4"]vectorpermutationValue;//Let'ssayvalueis[4,2,0,1,3]}我希望能够像那样在范围循环中使用它for(stringitem:permutation){{cout最终预期输出应该是:val_4val_2val_0val_1val_3我应该在Permutation类中实现什么方法来实现它? 最佳答案 您需要做一些工作。您需要实

c++ - 如何迭代 std::variant 的类型?

我有一些变体usingV=std::variant和一个带有原型(prototype)的函数Vparse(constjson&).该函数应该尝试解析所有类型(例如A、B,然后是C)直到第一次成功(它应该隐式地解析,因为及时会有很多类型)。如何实现这种东西?我们可以使用std::variant_size不知何故。Here是接近我需要的东西。我的解决方案是明确列出所有类型的解析器。Vparse(constjson&i_j){usingParser=std::function;staticconstautops=std::vector{[](constauto&j)->MaybeV{retu

c++ - 如何参数化迭代器方向?

基本上我在做以下事情:std::setindices;//..fillindicesif(flag){//weneedtoprocessinascendingorderBOOST_FOREACH(inti,indices){process(i);}}else{//weneedtoprocessindescendingorderBOOST_REVERSE_FOREACH(inti,indices){process(i);}}我想知道是否有一种方法可以在C++03中只调用一次process(i)来编写相同的东西,以某种方式对处理顺序进行参数化?像这样(显然即使在C++0x中也不起作用,因为